package com.base.component.ai.agent.core.base;

import com.base.component.ai.agent.bo.ContextBO;
import com.base.component.ai.agent.bo.ContextParamBO;

/**
 * Agent
 * @author zywei
 *
 */
public interface Agent<MSG,CP extends ContextParamBO,PP> {
	
	default Integer order() {
		return Integer.MIN_VALUE;
	}
	
	default boolean support(Class<?> cls) {
		return true;
	}

	void apply(ContextBO<MSG,CP,PP> context);
	
	/**
	 * 异常处理
	 * @param e
	 * @param context
	 * @return 是否继续执行异常逻辑
	 */
	default boolean exception(Throwable e,ContextBO<MSG,CP,PP> context) {
		return true;
	}
	
	/**
	 * 分组
	 * @return
	 */
	default int group() {
		return 0;
	}
	
}
